package uYach

import "encoding/json"

// Msg 知音楼机器人
type Msg struct {
	MsgType  string      `json:"msgtype"`
	Text     MsgText     `json:"text"`
	Markdown MsgMarkdown `json:"markdown"`
	At       MsgAt       `json:"at"`
}

// MsgText 文本类型消息
type MsgText struct {
	Content string `json:"content"`
}

// MsgText 文本类型消息
type MsgMarkdown struct {
	Title string `json:"title"`
	Text  string `json:"text"`
}

// MsgAt 消息@
type MsgAt struct {
	AtMobiles []string `json:"atMobiles"`
	IsAtAll   bool     `json:"isAtAll"`
}

// 实例化消息
func NewMsg() *Msg {
	msg := new(Msg)
	msg.Text = MsgText{}
	msg.Markdown = MsgMarkdown{}
	msg.At = MsgAt{}
	msg.At.IsAtAll = false

	return msg
}

// 文本内容
func (msg *Msg) T(txt string) *Msg {
	msg.MsgType = "text"
	msg.Text.Content = txt

	return msg
}

// Markdown
func (msg *Msg) M(title string, text string) *Msg {
	msg.MsgType = "markdown"
	msg.Markdown.Title = title
	msg.Markdown.Text = text

	return msg
}

// @
func (msg *Msg) A(mobiles []string) *Msg {
	msg.At.AtMobiles = mobiles
	msg.At.IsAtAll = false

	return msg
}

// @所有人
func (msg *Msg) AA() *Msg {
	msg.At.AtMobiles = make([]string, 0)
	msg.At.IsAtAll = true

	return msg
}

// 转码
func (msg *Msg) Encode() ([]byte, error) {
	return json.Marshal(msg)
}
